/*
 *
A new
A construct
~A disconstruct
A delete

 */
#include <iostream>
#include <cstdlib>
using namespace std;
class A{
	public:
		A(void){
			cout << "A construct" << endl;
		}
		~A(void){
			cout << "~A disconstruct" << endl;
		}
		void * operator new(size_t size){
			cout << "A new" << endl;
			return malloc(size);
		}
		void operator delete(void *p){
			cout << "A delete" << endl;
			free(p);
		}
};
int main(void){
	A *p = new A;
	delete p;
	return 0;
}
